package CtrLayer;

import java.util.ArrayList;

import javax.mail.internet.InternetAddress;

import DataLayer.DB.DBBy;
import DataLayer.DB.DBKunde;
import DataLayer.DB.DBLand;
import DataLayer.Model.By;
import DataLayer.Model.Kunde;
import DataLayer.Model.Land;

/**
 * KundeCtr is used to create,find,update and delete customers.
 * 
 * @author Gruppe 4 - Dennis Biil, Brian Smed, Kristian Henriksen og Anders Engbo
 * @version 1.0
 */
public class KundeCtr implements IFKundeCtr
{
	public KundeCtr()
	{
	}

	@Override
	public ArrayList<Kunde> getAllKunder(boolean klubMedlem)
	{
		DBKunde kundeDB = new DBKunde();
		return kundeDB.getAllKunde(klubMedlem);
	}

	public ArrayList<Kunde> getAllKunder()
	{
		DBKunde kundeDB = new DBKunde();
		return kundeDB.getAllKunde();
	}

	@Override
	public ArrayList<Kunde> getAllKundeViaName(String name)
	{
		DBKunde kundeDB = new DBKunde();
		return kundeDB.getAllKundeViaName(name);
	}

	@Override
	public void createKunde(
							String fornavn, String efternavn, String adresse,
							String postnr, String by, String land, String tlf,
							String email, boolean klubmedlem,
							Long udloebsdato, boolean underrettet) throws Exception
	{
		InternetAddress checkedEmail = new InternetAddress(email, true);
		Kunde k = new Kunde(
				fornavn, efternavn, adresse, postnr, by, land, tlf, email,
				klubmedlem, udloebsdato, underrettet);
		DBKunde kundeDB = new DBKunde();
		kundeDB.insertKunde(k);
	}

	@Override
	public int updateKunde(Kunde k)
	{
		DBKunde kundeDB = new DBKunde();
		return kundeDB.updateKunde(k);
	}

	@Override
	public int deleteKunde(Kunde k) throws Exception
	{
		DBKunde kundeDB = new DBKunde();
		return kundeDB.deleteKunde(k);
	}

	@Override
	public Kunde getKunde(int kundeId)
	{
		DBKunde kundeDB = new DBKunde();
		return kundeDB.getKunde(kundeId);
	}

	@Override
	public Kunde getKundeViaName(String navn)
	{
		DBKunde kundeDB = new DBKunde();
		return kundeDB.getKundeViaName(navn);
	}

	@Override
	public Kunde getKundeViaEmail(String email)
	{
		DBKunde kundeDB = new DBKunde();
		return kundeDB.getKundeViaEmail(email);
	}

	public By getByFromPostNr(int postnr)
	{
		DBBy byDB = new DBBy();
		return byDB.getBy(postnr);
	}

	public ArrayList<By> getByer()
	{
		DBBy byDB = new DBBy();
		return byDB.getAllByer();
	}

	public ArrayList<Land> getLande()
	{
		DBLand landDB = new DBLand();
		return landDB.getAllLande();
	}

	public Land getLandByName(String land)
	{
		DBLand landDB = new DBLand();
		return landDB.getLand(land);
	}

	public Land getLandByid(int landId)
	{
		DBLand landDB = new DBLand();
		return landDB.getLand(landId);
	}
}